package com.cskaoyan.javase.oop1._8static._3usecase;

/**
 * @description: static的使用场景
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

import java.util.Arrays;

/**
 * 1. 静态成员变量：
 *    - 属于全体对象所共享而不是独属于某个对象的成员变量，所以
 *      - 当存在需要所有对象共享的变量时，应该使用static
 *    - **不仅是全体对象共享的，而且是整个类全局独一份的（因为类加载只有一次）**
 *      - 所以，如果希望某个变量在类的全局独一份，它应该是static修饰的变量
 *
 * 2. 静态成员方法：
 *    - 静态方法的最主要特点就是调用简单，无需创建对象即可调用，所以
 *      - 如果希望一个方法能够更方便快捷的去调用，可以把它声明为static修饰的静态成员方法
 *    - 实际上根据静态成员方法调用简单的特点，当一个类中全部都是静态成员方法时
 *      - 它的方法调用都可以使用类名点去完成，这就是Java当中的**“工具类”**
 *      - 比如数组工具类Arrays、集合工具类Collections、数学工具类Math等等
 *    - 当然，静态成员方法也可以用来给静态成员变量赋值，这类似于用成员方法给成员变量赋值
 *      - 实际上成员方法也是可以给静态成员变量赋值的，但是这种赋值依赖于创建对象，是比较少用的方式
 *
 */
public class Demo {
    public static void main(String[] args) {
        test();

        //Arrays.toString()
        //Math.PI
        //Integer.MAX_VALUE
    }

    public static void test(){
        System.out.println("hello world!");
    }
}
class Student{
    static int age;
    public static void setAge(int age){
        Student.age = age;
    }
}